﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SIM.Geo.UI;
using SIM.Geo.UI.Movil.Clases;
using Proxy;
using SIM.Util;
namespace SIM.Geo.UI.Movil.Controllers
{
    public class GeneralController : BaseController
    {
        //
        // GET: /General/

        public ActionResult Index()
        {
            return View();
        }
        public bool ValidarSesion()
        {

            if (Session[Sesiones.USUARIO] == null)
            {
                return false;
            }
            else
            {
                return true;
            }

        }
        /// <summary>
        /// Método Validar la session
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult isLogged()
        {
            Resultado retorno = new Resultado();
            try
            {
                if (ValidarSesion())
                {
                    retorno.result = 1;
                    retorno.message = "OK";
                }
                else
                {
                    retorno.result = 0;
                    retorno.message = "La sesion ha Expirado. Inicie sesion nuevamente.";
                }

            }
            catch (Exception ex)
            {
                retorno.result = 0;
                retorno.message = String.Format("Ocurrió un error + {0}", ex.Message);
                Logger.Error("General Controller:isLogged", UserLogon.CodigoUsuario, ex);
            }
            return Json(retorno, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// Método para obtener usuario logueado
        /// </summary>
        /// <returns></returns>
        public JsonResult obtenerUsuarioLogeado()
        {
            Resultado retorno = new Resultado();
            retorno.result = 1;
            try
            {
                if (ValidarSesion())
                {
                    Usuario obj = new Usuario();

                    obj.id = Convert.ToInt32(UserLogon.CodigoGeologo);
                    obj.nombre = Convert.ToString(UserLogon.NombreUsuario);
                    retorno.data = Json(obj, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    retorno.result = 0;
                    retorno.code = Constantes.CodigoAplicacion.COD_SESION_FIN; //session FInalizada
                    retorno.message = "La sesión ha finalizado.";

                }
            }
            catch (Exception ex)
            {
                retorno.result = 0;
                retorno.message = ex.Message;
                Logger.Error("General Controller:obtenerUsuarioLogeado", UserLogon.CodigoUsuario, ex);

            }
            return Json(retorno, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// Método obtener el perfil usuario logueado
        /// </summary>
        /// <returns></returns>
        public JsonResult obtenerPerfilUsuarioLogeado()
        {
            Resultado retorno = new Resultado();
            retorno.result = 1;
            try
            {
                retorno.message = Convert.ToString(UserLogon.NombrePerfil);
            }
            catch (Exception ex)
            {
                retorno.result = 0;
                retorno.message = ex.Message;
                Logger.Error("General Controller:obtenerPerfilUsuarioLogeado", UserLogon.CodigoUsuario, ex);

            }
            return Json(retorno, JsonRequestBehavior.AllowGet);
        }


        public JsonResult ListItemAnio()
        {

            List<SearchBoxData> anios = new List<SearchBoxData>();
            for (int i = 2000; i < 2030; i++)
            {
                var searchBoxData = new SearchBoxData() { Value = i.ToString(), Text = i.ToString() };
                anios.Add(searchBoxData);
            }
            return Json(anios, JsonRequestBehavior.AllowGet);
        }
        public JsonResult ListItemEstadoSondaje()
        {

            List<SearchBoxData> estados = new List<SearchBoxData>();
            //  estados.Add(new SearchBoxData() { Value = TipoDropDownList.Todos.GetHashCode().ToString(), Text = TipoDropDownList.Todos.ToString() });
            estados.Add(new SearchBoxData() { Value = enmEstadoSondaje.Iniciado.GetHashCode().ToString(), Text = enmEstadoSondaje.Iniciado.ToString() });
            estados.Add(new SearchBoxData() { Value = enmEstadoSondaje.Finalizado.GetHashCode().ToString(), Text = enmEstadoSondaje.Finalizado.ToString() });

            return Json(estados, JsonRequestBehavior.AllowGet);
        }

        public JsonResult UserLogout()
        {
            Resultado retorno = new Resultado();
            retorno.result = 1;
            retorno.message = "sesion finalizada";

            Session.Abandon();
            Session.Clear();

            return Json(retorno, JsonRequestBehavior.AllowGet);
        }
        
      
        public JsonResult ListItemTipoContacto()
        {
            using (SETipoContactoClient proxy = new SETipoContactoClient())
            {
                var tipoContacto = proxy.ObtenerListItem();
                return Json(tipoContacto, JsonRequestBehavior.AllowGet);
            }
        }
    }
    public class Usuario
    {

        public int id { get; set; }
        public string nombre { get; set; }

    }
}
